.TH "Slurm API" "3" "Slurm administrative functions" "April 2015" "Slurm administrative functions"

.SH "NAME"
slurm_create_partition, slurm_create_reservation,
slurm_delete_partition, slurm_delete_reservation,
slurm_init_part_desc_msg, slurm_init_resv_desc_msg,
slurm_reconfigure, slurm_shutdown, slurm_takeover, 
,slurm_init_update_node_msg slurm_update_node, slurm_update_partition,
slurm_update_reservation
\- Slurm administrative functions
.SH "SYNTAX"
.LP
#include <slurm/slurm.h>
.LP
int \fBslurm_create_partition\fR (
.br
	update_part_msg_t *\fIupdate_part_msg_ptr\fP
.br
);
.LP
int \fBslurm_create_reservation\fR (
.br
	resv_desc_msg_t *\fIupdate_resv_msg_ptr\fP
.br
);
.LP
int \fBslurm_delete_partition\fR (
.br
	delete_part_msg_t *\fIdelete_part_msg_ptr\fP
.br
);
.LP
int \fBslurm_delete_reservation\fR (
.br
	reservation_name_msg_t *\fIdelete_resv_msg_ptr\fP
.br
);
.LP
void \fBslurm_init_front_end_msg\fR (
.br
	update_front_end_msg_t *\fIupdate_front_end_msg_ptr\fP
.br
);
.LP
void \fBslurm_init_part_desc_msg\fR (
.br
	update_part_msg_t *\fIupdate_part_msg_ptr\fP
.br
);
.LP
void \fBslurm_init_resv_desc_msg\fR (
.br
	resv_desc_msg_t *\fIupdate_resv_msg_ptr\fP
.br
);
.LP
void \fBslurm_init_update_node_msg\fR(
.br
	update_node_msg_t *\fIupdate_node_msg_ptr\fP
.br
);
.LP
int \fBslurm_reconfigure\fR ( );
.LP
int \fBslurm_shutdown\fR (
.br
	uint16_t \fIshutdown_options\fP
.br
);
.LP
int \fBslurm_takeover\fR ( );
.LP
int \fBslurm_update_front_end\fR (
.br
	update_front_end_msg_t *\fIupdate_front_end_msg_ptr\fP
.br
);
.LP
int \fBslurm_update_node\fR (
.br
	update_node_msg_t *\fIupdate_node_msg_ptr\fP
.br
);
.LP
int \fBslurm_update_partition\fR (
.br
	update_part_msg_t *\fIupdate_part_msg_ptr\fP
.br
);
.LP
int \fBslurm_update_reservation\fR (
.br
	resv_desc_msg_t *\fIupdate_resv_msg_ptr\fP
.br
);
.SH "ARGUMENTS"
.LP
.TP
\fIshutdown_options\fP
0: all slurm daemons are shutdown
.br
1: slurmctld generates a core file
.br
2: only the slurmctld is shutdown (no core file)
.TP
\fIdelete_part_msg_ptr\fP
Specifies the pointer to a partition delete request specification.
See slurm.h for full details on the data structure's contents.
.TP
\fIdelete_resv_msg_ptr\fP
Specifies the pointer to a reservation delete request specification.
See slurm.h for full details on the data structure's contents.
.TP
\fIupdate_front_end_msg_ptr\fP
Specifies the pointer to a front end node update request specification.
See slurm.h for full details on the data structure's contents.
.TP
\fIupdate_node_msg_ptr\fP
Specifies the pointer to a node update request specification. See slurm.h
for full details on the data structure's contents.
.TP
\fIupdate_part_msg_ptr\fP
Specifies the pointer to a partition create or update request specification.
See slurm.h for full details on the data structure's contents.
.TP
\fIupdate_resv_msg_ptr\fP
Specifies the pointer to a reservation create or update request specification.
See slurm.h for full details on the data structure's contents.

.SH "DESCRIPTION"
.LP
\fBslurm_create_partition\fR Request that a new partition be created.
Initialize the data structure using the \fBslurm_init_part_desc_msg\fR
function prior to setting values of the parameters to be changed.
Note: \fBslurm_init_part_desc_msg\fR is not equivalent to setting the data
structure values to zero.  A partition name must be set for the call to
succeed.
This function may only be successfully executed by user root.
.LP
\fBslurm_create_reservation\fR Request that a new reservation be created.
Initialize the data structure using the \fBslurm_init_resv_desc_msg\fR
function prior to setting values of the parameters to be changed.
Note: \fBslurm_init_resv_desc_msg\fR is not equivalent to setting the data
structure values to zero.  The reservation's time limits, user or
account restrictions, and node names or a node count must be specified for
the call to succeed.
This function may only be successfully executed by user root.
.LP
\fBslurm_delete_partition\fR Request that the specified partition be deleted.
All jobs associated with the identified partition will be terminated and
purged.  This function may only be successfully executed by user root.
.LP
\fBslurm_delete_reservation\fR Request that the specified reservation be
deleted. This function may only be successfully executed by user root.
.LP
\fBslurm_init_update_front_end_msg\fR Initialize the contents of an update
front end node descriptor with default values. Note:
\fBslurm_init_update_front_end_msg\fR is not equivalent to setting the data
structure values to zero. Execute this function before executing
\fBslurm_update_front_end\fR.
.LP
\fBslurm_init_part_desc_msg\fR Initialize the contents of a partition
descriptor with default values. Note: \fBslurm_init_part_desc_msg\fR is
not equivalent to setting the data structure values to zero. Execute
this function before executing \fBslurm_create_partition\fR or
\fBslurm_update_partition\fR.
.LP
\fBslurm_init_resv_desc_msg\fR Initialize the contents of a reservation
descriptor with default values. Note: \fBslurm_init_resv_desc_msg\fR is
not equivalent to setting the data structure values to zero. Execute this
function before executing \fBslurm_create_reservation\fR or
\fBslurm_update_reservation\fR.
.LP
\fBslurm_init_update_node_msg\fR Initialize the contents of an update node
descriptor with default values. Note: \fBslurm_init_update_node_msg\fR is
not equivalent to setting the data structure values to zero. Execute
this function before executing \fBslurm_update_node\fR.
.LP
\fBslurm_reconfigure\fR Request that the Slurm controller re\-read its
configuration file. The new configuration parameters take effect
immediately. This function may only be successfully executed by user root.
.LP
\fBslurm_shutdown\fR Request that the Slurm controller terminate. This
function may only be successfully executed by user root.
.LP
\fBslurm_takeover\fR Request that the Slurm primary controller shutdown
immediately and the backup controller take over.
This function may only be successfully executed by user root.
.LP
\fBslurm_update_front_end\fR Request that the state of one or more front end
nodes be updated.
This function may only be successfully executed by user root.
If used by some autonomous program, the state value most likely to be used is
\fBNODE_STATE_DRAIN\fR.
.LP
\fBslurm_update_node\fR Request that the state of one or more nodes be updated.
Note that the state of a node (e.g. DRAINING, IDLE, etc.) may be changed, but
its hardware configuration may not be changed by this function. If the hardware
configuration of a node changes, update the Slurm configuration file and execute
the \fBslurm_reconfigure\fR function. This function may only be successfully
executed by user root. If used by some autonomous program, the state value
most likely to be used is \fBNODE_STATE_DRAIN\fR or \fBNODE_STATE_FAILING\fR.
The node state flag \fBNODE_STATE_NO_RESPOND\fR may be specified without
changing the underlying node state. Note that the node's
\fBNODE_STATE_NO_RESPOND\fR flag will be cleared as soon as the slurmd
daemon on that node communicates with the slurmctld daemon.
Likewise the state \fBNODE_STATE_DOWN\fR indicates that the slurmd daemon
is not responding (and has not responded for an interval at least as long
as the \fBSlurmdTimeout\fR configuration parameter). The node will leave the
\fBNODE_STATE_DOWN\fR state as soon as  the slurmd daemon communicates.
.LP
\fBslurm_update_partition\fR Request that the configuration of a
partition be updated.  Note that most, but not all parameters of a
partition may be changed by this function. Initialize the data
structure using the \fBslurm_init_part_desc_msg\fR function prior
to setting values of the parameters to be changed. Note:
\fBslurm_init_part_desc_msg\fR is not equivalent to setting the
data structure values to zero. This function may only be
successfully executed by user root.
.LP
\fBslurm_update_reservation\fR Request that the configuration of a
reservation be updated.  Initialize the data structure using the
\fBslurm_init_resv_desc_msg\fR function prior to setting values of
the parameters to be changed. Note:  \fBslurm_init_resv_desc_msg\fR
is not equivalent to setting the data structure values to zero. This
function may only be successfully executed by user root.

.SH "RETURN VALUE"
.LP
On success, zero is returned. On error, \-1 is returned, and the Slurm error
code is set appropriately.
.LP
Exception:  A successful slurm_create_reservation call returns a string
containing the name of the reservation, in memory to be freed by the caller.
A failed call returns NULL and sets the Slurm error code.
.SH "ERRORS"
.LP
\fBSLURM_PROTOCOL_VERSION_ERROR\fR Protocol version has changed, re\-link your
code.
.LP
\fBESLURM_INVALID_NODE_NAME\fR The requested node name(s) is/are not valid.
.LP
\fBESLURM_INVALID_NODE_STATE\fR The specified state node state or requested
node state transition is not valid.
.LP
\fBESLURM_INVALID_PARTITION_NAME\fR The requested partition name is not valid.
.LP
\fBESLURM_INVALID_AUTHTYPE_CHANGE\fR The \fBAuthType\fR parameter can
not be changed using the \fBslurm_reconfigure\fR function, but all Slurm
daemons and commands must be restarted. See \fBslurm.conf\fR(5) for more
information.
.LP
\fBESLURM_INVALID_SCHEDTYPE_CHANGE\fR The \fBSchedulerType\fR parameter can
not be changed using the \fBslurm_reconfigure\fR function, but the
\fBslurmctld\fR daemon must be restarted. Manual changes to existing job
parameters may also be required. See \fBslurm.conf\fR(5) for more information.
.LP
\fBESLURM_INVALID_SWITCHTYPE_CHANGE\fR The \fBSwitchType\fR parameter can
not be changed using the \fBslurm_reconfigure\fR function, but all
Slurm daemons and commands must be restarted. All previously running
jobs will be lost. See \fBslurm.conf\fR(5) for more information.
.LP
\fBESLURM_ACCESS_DENIED\fR The requesting user lacks authorization for
the requested action (e.g. trying to delete or modify another user's job).
.LP
\fBSLURM_PROTOCOL_SOCKET_IMPL_TIMEOUT\fR Timeout in communicating with
Slurm controller.
.LP
\fBESLURM_RESERVATION_ACCESS\fR  Requestor is not authorized to access the
reservation.
.LP
\fBESLURM_RESERVATION_INVALID\fR  Invalid reservation parameter given,
e.g. wrong name given.
.LP
\fBESLURM_INVALID_TIME_VALUE\fR  Invalid time value.
.LP
\fBESLURM_RESERVATION_BUSY\fR  Reservation is busy, e.g. trying to delete a
reservation while in use.
.LP
\fBESLURM_RESERVATION_NOT_USABLE\fR  Reservation not usable, e.g. trying to
use an expired reservation.
.SH "EXAMPLE"
.LP
#include <stdio.h>
.br
#include <stdlib.h>
.br
#include <slurm/slurm.h>
.br
#include <slurm/slurm_errno.h>
.LP
int main (int argc, char *argv[])
.br
{
.br
	update_node_msg_t       update_node_msg;
.br
	update_part_msg_t       update_part_msg;
.br
	delete_part_msg_t       delete_part_msg;
.br
	resv_desc_msg_t         resv_msg;
.br
	char                   *resv_name = NULL;
.LP
	if (slurm_reconfigure ( )) {
.br
		slurm_perror ("slurm_reconfigure error");
.br
		exit (1);
.br
	}
.LP
	slurm_init_part_desc_msg ( &update_part_msg );
.br
	update_part_msg.name = "test.partition";
.br
	update_part_msg.state_up = 0;  /* partition down */
.br
	if (slurm_create_partition (&update_part_msg)) {
.br
		slurm_perror ("slurm_create_partition error");
.br
		exit (1);
.br
	}
.LP
	update_part_msg.state_up = 1;  /* partition up */
.br
	if (slurm_update_partition (&update_part_msg)) {
.br
		slurm_perror ("slurm_update_partition error");
.br
		exit (1);
.br
	}
.LP
	delete_part_msg.name = "test.partition";
.br
	if (slurm_delete_partition (&delete_part_msg)) {
.br
		slurm_perror ("slurm_delete_partition error");
.br
		exit (1);
.br
	}
.LP
	slurm_init_update_node_msg (&update_node_msg);
.br
	update_node_msg.node_names = "lx[10\-12]";
.br
	update_node_msg.node_state = NODE_STATE_DRAIN ;
.br
	if (slurm_update_node (&update_node_msg)) {
.br
		slurm_perror ("slurm_update_node error");
.br
		exit (1);
.br
	}
.LP
	slurm_init_resv_desc_msg ( &resv_msg );
.br
	resv_msg.start_time = time(NULL) + 60*60;  /* One hour from now */
.br
	resv_msg.duration = 720;  /* 12 hours/720 minutes */
.br
	resv_msg.node_cnt = 10;
.br
	resv_msg.accounts = "admin";
.br
	resv_name = slurm_create_reservation (&resv_msg);
.br
	if (!resv_name) {
.br
		slurm_perror ("slurm_create_reservation error");
.br
		exit (1);
.br
	}
.br
	free(resv_name);
.br
	exit (0);
.br
}

.SH "NOTE"
These functions are included in the libslurm library,
which must be linked to your process for use
(e.g. "cc \-lslurm myprog.c").

.SH "COPYING"
Copyright (C) 2002\-2007 The Regents of the University of California.
Copyright (C) 2008\-2010 Lawrence Livermore National Security.
Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
CODE\-OCEC\-09\-009. All rights reserved.
.LP
This file is part of Slurm, a resource management program.
For details, see <https://slurm.schedmd.com/>.
.LP
Slurm is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
.LP
Slurm is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
details.
.SH "SEE ALSO"
.LP
\fBscontrol\fR(1), \fBslurm_get_errno\fR(3), \fBslurm_init_job_desc_msg\fR(3),
\fBslurm_perror\fR(3), \fBslurm_strerror\fR(3), \fBslurm.conf\fR(5)
